#include <Wire.h>                     // 引入 Wire 库，用于 I2C 通信
#include <Adafruit_GFX.h>              // 引入 Adafruit GFX 库，用于图形绘制
#include <Adafruit_SSD1306.h>          // 引入 Adafruit SSD1306 库，用于控制 OLED 屏幕

#define SCREEN_WIDTH 128  // OLED 屏幕宽度
#define SCREEN_HEIGHT 64  // OLED 屏幕高度

// 创建 OLED 显示对象，使用 I2C 接口
// 这里 -1 代表没有复位引脚
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);

void setup() {
  // 启动串口，用于调试
  Serial.begin(115200);
  
  // 初始化 I2C 通信，设置 SDA 和 SCL 引脚为 GPIO19 和 GPIO18
  Wire.begin(17, 18);  // 使用 GPIO19 作为 SDA，GPIO18 作为 SCL

  // 初始化 OLED 屏幕，检查是否初始化成功
  if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {  // 0x3C 是 OLED 屏幕的 I2C 地址
    Serial.println(F("SSD1306 allocation failed"));
    for (;;);  // 初始化失败时停在这里
  }

  display.clearDisplay();  // 清空屏幕
  display.setTextSize(2);  // 设置文本大小为 2
  display.setTextColor(SSD1306_WHITE);  // 设置文本颜色为白色
  display.setCursor(0, 0);  // 设置光标位置为 (0, 0)

  display.println(F("Hello, ESP32-S3!"));  // 显示文本
  display.display();  // 更新显示内容
}

void loop() {
  // 这里可以写一些动态更新显示的代码，当前没有需要的内容
}
